約 4,567,392 件
https://w.atwiki.jp/ciez/pages/36.html
Using C/C++ and Fortran together Using C/C++ and Fortran together http //www.yolinux.com/TUTORIALS/LinuxTutorialMixingFortranAndC.html http //arnholm.org/software/cppf77/cppf77.htm
https://w.atwiki.jp/saicron/pages/27.html
Emacs Lisp テキストエディタ プログラミング言語 Emacs GNU Emacs Lisp Reference Manual Programming in Emacs Lisp GNU Emacs Lispリファレンスマニュアル GNU Emacsマニュアル 入門 GNU Emacs 第3版 目次 Help Narrowing Bookmark Register 括弧・式・関数単位のカーソル移動 大文字・小文字変換 HTML Help キーストローク 関数名 ノート describe-key キー入力からバインドされているコマンドを表示 command-apropos コマンド名の一部でコマンドを検索表示する apropos-documentation page top Narrowing キーストローク 関数名 ノート C-x n n narrow-to-region C-x n w widen page top Bookmark キーストローク 関数名 ノート C-x r l list-bookmarks dで削除。 C-x r m RET bookmark-set ブックマークする。 C-x r m bookmark RET bookmark-set 名前を付けてブックマークする C-x r l list-bookmarks 一覧 +more... キーストローク 関数名 ノート C-x r b bookmark RET bookmark-jump ブックマークに移動する bookmark-save ブックマークファイルにセーブ M-x bookmark-load RET filename RET ブックマークデータのリストを収めたfilenameという名前のファイルをロードする。デフォルトのブックマークファイル以外のブックマークデータを収めたファイルに対しても、コマンドbookmark-writeと同じく、このコマンドを使える。 M-x bookmark-write RET filename RET 現在設定されているブックマークデータをファイルfilenameに保存する。 M-x bookmark-delete RET bookmark RET bookmarkという名前のブックマークを削除する。 M-x bookmark-insert-location RET bookmark RET ブックマークbookmarkが指しているファイルの名前をバッファに挿入する。 M-x bookmark-insert RET bookmark RET ブックマークbookmark page top Register キーストローク 関数名 ノート C-x r SPC REGISTER REGISTERは[a-z] C-x r j REGISTER C-x h 全てヤンク recentf-open-files page top 括弧・式・関数単位のカーソル移動 キーストローク 関数名 ノート C-M-f, C-M-b 式単位で移動 C-M-n, C-M-p 括弧単位で移動 C-M-u, C-M-d インデントを移動 M-a, M-e 文単位で移動 C-M-a, C-M-e C-M-SPC C-M-k C-M-h page top 大文字・小文字変換 キーストローク 関数名 ノート M-l 単語を小文字(カーソル以降)。 M-u 単語を大文字(カーソル以降)。 M-c 文字を大文字(カーソル上)。 C-x C-l リージョンを小文字。 C-x C-u リージョンを大文字。 page top HTML html-helper-mode M-C-i 補完 page top © Sai
https://w.atwiki.jp/maseken/pages/23.html
Fortranについて. 注意点,過去に困ったことやその解決法などをメモ せっかくためた経験値をムダにしないために. Fortran Fortranとは, 間瀬研では,「Developer Studio」というソフトを使う. 使い方に関しては,マニュアル参照 適宜マニュアルで関数の使い方を調べながら使うといいと思う 基本的な関数 fopen ファイルを開く fid = fopen(...) fscanf データを読む A = fscanf(fid,....) surf plot 詳しい使い方はマニュアル参照
https://w.atwiki.jp/usapfrog/pages/37.html
Matlabが遅いよってことで一から勉強するよ Hello Worldまで コンパイラだけなら、linuxは常備(なかったらyumなどで)。 [Windows] OctaveかMingGW環境で手に入る。 Windowsならインストール後"C \Octave\Octave3.6.4_gcc4.6.2\mingw\bin"と"C \Octave\Octave3.6.4_gcc4.6.2\mingw\msys\1.0\bin" または、"C \MinGW\bin"と"C \MinGW\msys\1.0\bin"にパスを通しとくのを忘れないこと。 (LAPACKを使う予定があるならOctaveをいれておくこと) [Mac] macportsやhomebrewなどで、gfortranをインストールする。 $ vi test.f90 program main write(*,*) Hello World end $ gfortran test.f90 $ a.exe 開発環境/IDE まあでも、やっぱIDE欲しいよ。 (WindowsならMinGW導入後) EclipseのPhotranを導入する。 導入法に従って、インストール。 (今までのeclipseに後付しないんなら Eclipse for Parallel Application Developersを落としてきて解凍すればよし) ついでに日本語化をしておく。 http //mergedoc.sourceforge.jp/の真ん中下くらいのPleiades プラグインをダウンロード・解凍 中身をeclipseのフォルダにコピペ・統合する。 eclipse.iniの最終行に以下を追加 -javaagent plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar 初回のみ同梱のeclipse.exe -clean.cmdから起動する 64bit windowsで起動時にJavaがエラーがないとエラーが出るときは、64bit javaを手動でインストールして、http //www.java.com/ja/download/manual.jsp、C \Program Files\Java\jre7\binにパスを通すこと 新規→プロジェクトでFortranぽいのを選ぶ 新規→ソースでFortranソースを選ぶ 上のプログラム書く ビルド・実行 (合間にでるオプションは Local Fortran Application, MinGW gdb) 参考 (pdf)eclipseでFortranプログラムの作り方 コード規約 流儀が本やらサイトによってそれぞれみたいだけど大体以下をベースに。 気象研究所 北海道大学 Fortran90 Tips NAG Fortran入門 FortranTips 変数宣言 変数同士の計算式は大体C同様で計算できる。 複素数標準実装、倍精度のdの使い方が特徴的。 というよか、Fortranでは少し神経質に倍精度指定しなきゃならないらしい。 うっかり1.0とか使うと、単精度になり桁に余計なゴミが入る。 program sampleinteger alogical preal(8) yreal(8), parameter pi = 3.14159 !定数など。(=Cのconst)complex(8) scharacter(len=4) w a = 3p = .true.y = 42.0d0 !dは 3e-3のeみたいに使うs = (6.0d0, 3.0d0) !これで s = 6 + 3iw = "abcd" print *, a, z, u, wend program sample 追記 characterはcharcter w*4でなく上記フォーマットのほうが了解性の点で良いらしい。 掛け算と混同してもいかんしね。 配列 足し算・内積。行数がずいぶん削れるのがありがたい。 printの書式はCとちょっと違う感じ。 program sample implicit none integer, parameter D = 3 real(8) x(D) = (/1d0, 2d0, 3d0/) real(8) y(D) = (/2d0, 1d0, -1d0/) real(8) z(D), v(D) real(8) w real(8) A(D,D) A(1,1 3) = (/ 8.0d0, 1.0d0, 6.0d0 /) A(2,1 3) = (/ 3.0d0, 5.0d0, 7.0d0 /) A(3,1 3) = (/ 4.0d0, 9.0d0, 2.0d0 /) z( ) = x( ) + y( ) v = matmul(A, x) w = dot_product(x, y) print "(a, f8.3, f8.3, f8.3)", "z=", z print "(a, f8.3, f8.3, f8.3)", "v=", v print "(a, f8.3)", "w=", wend program sample 結果 z= 3.000 3.000 2.000 v= 28.000 34.000 28.000 w= 1.000 ループ・分岐 do i=初期,限界,増分 else if (condition) then program sampleinteger i, j, kj=0; k=0do i=1,20 print *, "loop i=", i k= k + 3 if ( k 15) then print *, "exiting loop..." exit ! = break in C end if if ( k 6) cycle ! = continue in C j= j + 2enddoprint *, j, kend program sample 結果 loop i= 1 loop i= 2 loop i= 3 loop i= 4 loop i= 5 loop i= 6 exiting loop... 4 18 関数・モジュール 追記 引数には入出力指定を示すintent(in/out/inout)を付記すること。 sampmodule.f90 module sampmodule implicit none real(8),parameter c = 340d0 real(8),parameter rho = 1.3d0containsinteger function smd_test(a, b, x) integer, intent(in) a, b, x smd_test = a + b * xend function smd_testreal(8) function smd_pres(u) real(8), intent(in) u smd_pres = rho * c * uend function smd_presend module sampmodule sample.f90 program sample use sampmodule implicit none integer d real(8) p print *,c d = smd_test(1, 3, 5) print *,d p = smd_pres(2.0d0) print *,pend program sample ベクトルを返すとき 戻り値がベクトルの時は、resultを指定する。例は外積関数。 function cross(a,b) result(axb) implicit none real(8),dimension(3) axb real(8),dimension(3),intent(in) a real(8),dimension(3),intent(in) b axb(1) = a(2)*b(3) - a(3)*b(2) axb(2) = a(3)*b(1) - a(1)*b(3) axb(3) = a(1)*b(2) - a(2)*b(1)end function cross テキストIO statusのオプションが "r/w"に対応して、"old / (new, replace)" 追記をしたいときはopen文にposition= append オプションを付ける。 エラー処理をしたければiostat=status(整数変数)をつければ、 open時読み込みエラーをstatusに格納してくれて、open時のエラーをスルーできる。 program sample implicit none integer i, j, status integer,parameter fout = 11 integer,parameter fin = 12 real(8) x(20,20) do i=1,20 do j=1,20 x(i, j) = i * 100d0 + j; enddo enddo open(fout, file= mydata.dat , status= replace ) write(fout, *) x close(fout) open(fin, file= mydata.dat , status= old , iostat=status) if ( status .ne. 0 ) stop read(fin, *) x close(fin)end program sample バイナリIO サイズを指定して、オプションが長くなるだけ。 access, form, recl, rec program sample integer siz = 20*20*8 open(fin, file= mydata.bin , access= direct , form= unformatted , status= old , recl=siz) read(fin, rec=1) x close(fin) open(fout, file= mydata.bin , access= direct , form= unformatted , status= replace , recl=siz) write(fout,rec=1) x close(fout)end program sample 共有メモリメモリ並列(SMP) gfortranの共有メモリ並列(-fopenmp)はコンパイラオプションの最適化(-O3)とどこか相性悪いらしく、 扱う配列サイズがやや大きい場合、segmentaion faultを吐くことがあるらしい。 この場合、最適化は(-O1)を指定するとうまくいくことがある。 program sample implicit none integer, parameter n=36 integer i, ene(n), res ene( ) = 0 res = 3 !$omp parallel do private(i) do i=1,n ene(i) = 2*i + res end do !$omp end parallel do print *, ene( )end program sample バグった時はprivate指定をもう一度見なおしておくと良い。 3次逆行列/3次方程式 N 4のときは、素直にLapackとか然るべき数値計算ルーチンを使うべきだけど、 多用する3x3くらいは、(必要なライブラリかき集めるのめんどいし、四角い車輪の再生産にあるけど) 自分で書いていい気がする。 function inv3(A) result(Y) implicit none real(8), intent(in) A(3,3) real(8) Y(3,3) real(8) det integer i,j det = 0 do i=1,3 det = det + A(i,1)*cofact3(A,i,1) end do do i=1,3 do j=1,3 Y(i,j) = cofact3(A,j,i) / det end do end doend function inv3real(8) function cofact3(A,i,j) implicit none real(8), intent(in) A(3,3) integer, intent(in) i, j integer i2, i3, j2, j3 i2 = mod(i, 3)+1; i3 = mod(i+1, 3)+1; j2 = mod(j, 3)+1; j3 = mod(j+1, 3)+1; cofact3 = A(i2,j2)*A(i3,j3)-A(i2,j3)*A(i3,j2)end function cofact3 !wikipediaの三次方程式の解の公式・実部しか取ってこないので注意subroutine solve3(x, a) implicit none real(8), intent(out) x(NDIM) real(8), intent(in) a(NDIM) integer k complex(8) j, w, y(NDIM), p, q, R, S j = (0, 1) w = 0.5d0*(-1d0+j*sqrt(3d0)) p = a(2)-a(1)**2/3d0 q = a(3)-a(2)*a(1)/3d0+2d0/27d0*a(1)**3 R=(-q/2d0 + sqrt((q/2d0)**2 + (p/3d0)**3))**(1d0/3d0) S=(-q/2d0 - sqrt((q/2d0)**2 + (p/3d0)**3))**(1d0/3d0) do k=1,3 y(k) = w**(k-1) * R + w**(4-k) * S x(k) = real(y(k),8) - a(3)/3d0 end doend subroutine solve3
https://w.atwiki.jp/pspt/pages/237.html
FORTRAN 時代遅れ?いいえピチピチです。 FORTRAN FORTRANの魅力メリット デメリット リファレンス(入門)何も動作しないプログラム コメント文 変数に数字を代入する 文字を画面に出力する 簡単な計算をする 少し複雑な計算をする 変数の種類を変更する(型宣言) data文を利用して変数に値を代入する 端末から文字を入力する DO文 (繰り返し) IF文 (条件分岐)上のソースの簡易版 配列 FORTRANの魅力 メリット およそ50年前に開発された言語でありながら科学の分野では今なお現役である。 科学分野で扱われるだけあって計算が速い。 Cより習得がやや楽。 数式を書くのが楽。 変数をわざわざ宣言しなくてもよい。 美しい。 デメリット 無料の総合開発環境の質が悪い。 現在では一般にあまり使用されていない言語であるから習得しても見返りは少ない。 美しくない。 みんな大好きHello world program main print *,"Hello, World!" end program main stop end リファレンス(入門) 大学の講義「アルゴリズムとプログラミングⅠ」で配布された教科書を基に作成。特に断りがなければ1~8カラムは省略されているものとする。 何も動作しないプログラム プログラムの必要最低限の要素を確認しよう。 stop end コメント文 c 先頭がcで始まる一行はコメント文です。 stop end 変数に数字を代入する FORTRANではわざわざ変数を宣言する必要はありません。 a=1.0 b=1.1 stop end 文字を画面に出力する ここでは変数a,bそれぞれに代入した値を出力する。 文字列を出力する際は (クォーテーション)で囲む必要がある。 a=1.0 b=1.1 print *, a,b, test stop end 簡単な計算をする 足し算 + 引き算 - 掛け算 * 割り算 / 累乗 ** ここでは変数cにaとbを足し算した値を代入する。 a=1.0 b=1.1 solution=a+b print *, solution 少し複雑な計算をする ここでは解の公式を例とする。ただし±のうち+の方のみを再現する。 括弧は()のみ扱える。 平方根を返す関数はsqrt(x)。 a=1.0 b=-1.0 c=-1.0 x=(-b+sqrt(b**2-4*a*c))/(2*a) print *, x stop end 変数の種類を変更する(型宣言) 型 宣言 備考 整数型 integer I~N及びi~nで始まる変数はデフォルトでこれ 実数型 real I~N及びi~nで始まらない変数はデフォルトでこれ 文字型 character*n nに数字を入れて最大の文字数を指定できる 複素数型 complex 論理変数 logical 有効数字の桁数を増やしたければ型宣言のすぐ後ろに「*n」を添えればよい。(桁数がn倍になる) real number1 real*2 number2 number1=3.14 number2=3.14159265 print *, number1,number2 stop end data文を利用して変数に値を代入する data文を利用すれば一行で多くの変数に値を代入できる。 //内に代入したい数値を対応する通り並べる。 data a,b /1.0,1.1/ print *, a,b stop end 端末から文字を入力する read(*,*) a print *,a stop end DO文 (繰り返し) 下のソースは1から10までの連続した自然数の総和を出力するもの。 sum=0 do i=1,10 sum=sum+i end do print *,sum stop end IF文 (条件分岐) .EQ. = .NE. ≠ .LT. < .GT. > .LE. ≦ .GE. ≧ 条件式(等式や不等式)を用意しそれが満たされるか満たされないかで分岐する。 条件式を記述する際は上の表を参考にせよ。 以下のソースは端末からの入力が5.0以上かどうかを示す。 read(*,*) a if(a.GE.5.0) then print *, OK! end if else print *, NO end if stop end 上のソースの簡易版 read(*,*) a if(a.GE.5.0) print *, OK! else print *, NO stop end 配列 配列とは添え字付き変数に対応するものである。 ここでは配列の値の代入にdata文を、出力にDO文を用いた。 dimension abc(3) data abc/1.0,1.1,1.2/ do i=1,3 print *, i= ,i, abc= ,abc(i) end do stop end
https://w.atwiki.jp/ntemacs/pages/48.html
■ Windows版 Emacs 共通の設定 (一部の設定を除き、Linux版 Emacs にも適用可能) 【お知らせ】 2021/12/16 追記 相互リンク。こちらも参考になると思います。 https //ploversky.net/archives/463 2020/04/23 追記 ワンショットモディファイアの機能を利用し、左右の Alt キーに IME の切替えを割り当てられるようにしました。Keyhac の設定と連携することで動作します。US のキーボードを利用している場合にお試しください。 なお、次の設定も同じ操作性にできるように見直しました。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 2020/04/13 追記 「IME を無効にするキー設定」と「IME を有効にするキー設定」を追加しました。初期設定では、「無変換」キーと「変換」キーを割り当てています。C-o の設定はトグル動作となっていますが、設定の中のコメントを見直すことで変更可能です。お勧めは、C-o のトグル設定は残して C-j に英数への切替えを設定するものです。日本語への切替えが C-o によるトグル操作による切替えの他、C-j C-o での一発切替えが可能となります。(helm 利用の際に C-j がバッティングしますが、C-o で逃げれます。) なお、次の設定も同じ操作性にできるように見直しました。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 2019/05/17 追記 wdired 利用時に C-o による日本語入力を可能とする設定を追加しました。 2018/08/12 追記 mozc-im-mode 変数をバッファローカル変数にする方法を make-variable-buffer-local 関数を使う方法から defvar-local で定義する方法に見直しました。Emacs-24.3 以降で有効な設定となります。 https //qiita.com/tadsan/items/9d287a57c26711387043 2018/01/04 追記 mozc-candidate-dispatch の advice が helm の仕様変更により動作しなくなっていましたので見直しました。この対応で、dired 利用時に + キーで動作する dired-create-directory でも日本語が正常に入力できるようになりました。 2017/05/04 追記 本設定は Windows Subsystem for Linux でも利用可能です。設定は次のページから始めてください。 emacs-mozc を動かすための設定(WSL 設定編) 2016/12/01 追記 次のページで報告されている問題について対策しました。 https //github.com/d5884/mozc-im/pull/1 2016/09/13 追記 5) で mozc_emacs_helper.exe に対し IME を ON にするために発行しているキーを「Hiragana」から「Hankaku/Zenkaku」に変更しました。この対応で、Google日本語入力のキー設定が「MS-IME」以外の「ことえり」などでも emacs-mozc を使えるようになりました。(ただし、「Hankaku/Zenkaku」キーは「Hiragana」キーと異なり、IME の ON/OFF をトグルするキーとなります。必要な場合に一度のみ発行するように注意して利用する必要があります。(本設定を利用すれば問題は発生しません。)) 2015/12/07 追記 本設定とは直接関係ありませんが、isearch でキルリングを張り付けるには、C-s RET C-y とすればいいのですね。知りませんでした..。 http //kouritool.com/itdiary/emacs%E3%81%A7%E5%BC%B5%E3%82%8A%E4%BB%98%E3%81%91%E6%96%87%E5%AD%97%E5%88%97%E3%82%92%E6%A4%9C%E7%B4%A2/ 【本題】 【重要】 WSL版 Emacs の利用者は、最初に「emacs-mozc を動かすための設定(WSL 設定編)」を参照してください。 【重要】 Windows版 Emacs の利用者は、事前に「emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)」を参照してください。 【重要】 「emacs-mozc を動かすための設定(サーバ準備編)」を行う方法もありますが、特に理由がなければ mozc_emacs_helper.exe を利用する方法をお勧めします。 【重要】 Linux で mozc(Google日本語入力ではなく)を利用する場合は、次の対応を行った後、(共通)の設定を進んで下さい。 $ sudo apt install emacs-mozc-bin $ sudo apt install mozc-utils-gui NTEmacs で emacs-mozc を動かすための Emacs 設定編です。 以下は設定手順です。 1) (共通)melpa package から、mozc、mozc-im、mozc-popup をインストールする。 ※ mozc-candidate-style を overlay に設定した場合、動作が遅く使用に耐えません。これを改善するのが mozc-popup です。tabbar との相性も良いとの情報もあります。 ※ mozc-im を使うことで、isearch の中でも mozc による日本語入力が可能となります。 2) (共通)次のページから mozc-cursor-color.el をダウンロードし、~/.emacs.d/site-lisp 等の load 対象となるディレクトリ配下にサブディレクトリを作成し格納する。 https //github.com/iRi-E/mozc-el-extensions 3) (「サーバ準備編」利用の場合)サーバ準備編で git により作成された vagrant-emacs-mozc ディレクトリ以下に mozc-emacs-helper.sh というファイルがあるので、このファイルを ~/bin 等の PATH の通ったフォルダにコピーする。既存の Linux環境を利用する場合は、mozc-emacs-helper.sh の中身を確認し、Linuxマシンに自動ログインできるスクリプトに書き換える。置き換えるスクリプトは以下のようなもの。 ssh user @localhost -p port mozc_emacs_helper "$@" また、MinGW版 Emacs を利用している場合は、「fakecygpty を使うための設定」を利用し、fakecygpty-program-list に "mozc-emacs-helper.sh" を追加する。 4) (共通)init.el 等に以下の elisp の設定を追加する。 (require mozc-im) (require mozc-popup) (require mozc-cursor-color) (require wdired) (setq default-input-method "japanese-mozc-im") ;; popupスタイル を使用する (setq mozc-candidate-style popup) ;; カーソルカラーを設定する (setq mozc-cursor-color-alist ((direct . "red") (read-only . "yellow") (hiragana . "green") (full-katakana . "goldenrod") (half-ascii . "dark orchid") (full-ascii . "orchid") (half-katakana . "dark goldenrod"))) ;; カーソルの点滅を OFF にする (blink-cursor-mode 0) (defun enable-input-method ( optional arg interactive) (interactive "P\np") (if (not current-input-method) (toggle-input-method arg interactive))) (defun disable-input-method ( optional arg interactive) (interactive "P\np") (if current-input-method (toggle-input-method arg interactive))) (defun isearch-enable-input-method () (interactive) (if (not current-input-method) (isearch-toggle-input-method) (cl-letf (((symbol-function toggle-input-method) (symbol-function ignore))) (isearch-toggle-input-method)))) (defun isearch-disable-input-method () (interactive) (if current-input-method (isearch-toggle-input-method) (cl-letf (((symbol-function toggle-input-method) (symbol-function ignore))) (isearch-toggle-input-method)))) ;; IME をトグルするキー設定 (global-set-key (kbd "C-o") toggle-input-method) (define-key isearch-mode-map (kbd "C-o") isearch-toggle-input-method) (define-key wdired-mode-map (kbd "C-o") toggle-input-method) ;; IME を無効にするキー設定 (global-set-key (kbd "C- f1 ") disable-input-method) (define-key isearch-mode-map (kbd "C- f1 ") isearch-disable-input-method) (define-key wdired-mode-map (kbd "C- f1 ") disable-input-method) ;; (global-set-key (kbd "C-j") disable-input-method) ;; (define-key isearch-mode-map (kbd "C-j") isearch-disable-input-method) ;; (define-key wdired-mode-map (kbd "C-j") disable-input-method) ;; IME を有効にするキー設定 (global-set-key (kbd "C- f2 ") enable-input-method) (define-key isearch-mode-map (kbd "C- f2 ") isearch-enable-input-method) (define-key wdired-mode-map (kbd "C- f2 ") enable-input-method) ;; (global-set-key (kbd "C-o") enable-input-method) ;; (define-key isearch-mode-map (kbd "C-o") isearch-enable-input-method) ;; (define-key wdired-mode-map (kbd "C-o") enable-input-method) ;; mozc-cursor-color を利用するための対策 (defvar-local mozc-im-mode nil) (add-hook mozc-im-activate-hook (lambda () (setq mozc-im-mode t))) (add-hook mozc-im-deactivate-hook (lambda () (setq mozc-im-mode nil))) (advice-add mozc-cursor-color-update around (lambda (orig-fun rest args) (let ((mozc-mode mozc-im-mode)) (apply orig-fun args)))) ;; isearch を利用する前後で IME の状態を維持するための対策 (add-hook isearch-mode-hook (lambda () (setq im-state mozc-im-mode))) (add-hook isearch-mode-end-hook (lambda () (unless (eq im-state mozc-im-mode) (if im-state (activate-input-method default-input-method) (deactivate-input-method))))) ;; wdired 終了時に IME を OFF にする (advice-add wdired-finish-edit after (lambda ( rest args) (deactivate-input-method))) gnupack 等で W32-IME の設定がされている場合は、以下の箇所をコメント化してください。 gnupack-11系: 「@ime」セクション gnupack-12,13系: 「@ language - input method」セクション、「@ screen - cursor」セクション、「@ search - isearch」セクションの後半 MinGW版 Emacs を使っている場合は、以下の設定を追加してください。 ;; IME が ON の時、カーソルの移動が遅くなるのを改善する (setq w32-pipe-read-delay 10) helm を使っている場合は、以下の設定を追加してください。 (require cl-lib) ;; helm でミニバッファの入力時に IME の状態を継承しない (setq helm-inherit-input-method nil) ;; helm の検索パターンを mozc を使って入力した場合にエラーが発生することがあるのを改善する (advice-add mozc-helper-process-recv-response around (lambda (orig-fun rest args) (cl-loop for return-value = (apply orig-fun args) if return-value return it))) ;; helm の検索パターンを mozc を使って入力する場合、入力中は helm の候補の更新を停止する (advice-add mozc-candidate-dispatch before (lambda ( rest args) (when helm-alive-p (cl-case (nth 0 args) ( update (unless helm-suspend-update-flag (helm-kill-async-processes) (setq helm-pattern "") (setq helm-suspend-update-flag t))) ( clean-up (when helm-suspend-update-flag (setq helm-suspend-update-flag nil))))))) ;; helm で候補のアクションを表示する際に IME を OFF にする (advice-add helm-select-action before (lambda ( rest args) (deactivate-input-method))) 5) (「mozc_emacs_helper コンパイル編」利用の場合)init.el 等に以下の elisp の設定を追加する。 ;; Windows の mozc では、セッション接続直後 directモード になるので hiraganaモード にする (advice-add mozc-session-execute-command after (lambda ( rest args) (when (eq (nth 0 args) CreateSession) ;; (mozc-session-sendkey (hiragana))))) (mozc-session-sendkey (Hankaku/Zenkaku))))) 6) (「サーバ準備編」利用の場合)init.el 等に以下の elisp の設定を追加する。 ;; https //github.com/igjit/vagrant-emacs-mozc (setq mozc-helper-program-name "mozc_emacs_helper.sh") (setq mozc-helper-process-timeout-sec 10) 7) (「mozc_emacs_helper コンパイル編」利用の場合)mozc のキーバインドを設定する。 「Google日本語入力」のプロパティで、「キー設定」を「ことえり」に選択してください。「ことえり」は Emacsキーバインドをベースとしたキー設定となっており、更に以下のキーが近いキー位置で利用可能となっています。 C-i (文節を縮める) C-o (文節を伸ばす) C-j (ひらがなに表示切替) C-k (全角カタカナに表示切替) C-l (全角英数に表示切替) C-; (半角に表示切替) C- /C- (半角英数に表示切替) ※ ターミナルソフトから Emacs を利用する場合、C-;、C- 、C- は利用できません。他のキーに置き換えてご利用ください。 8) (「サーバ準備編」利用の場合)mozc のキーバインドを設定する。 Linuxサーバ の mozc のキーバインドの設定は mozc_tool というコマンドで行いますが、Vargent で作成した Linuxサーバには mozc_tool はインストールされていません。このため、Windows PC に「Google日本語入力」をインストールして 7) の設定を行い、設定した結果が格納されている以下のファイルを Linux 側の ~/.mozc ディレクトリにコピーすることで対応してください。ファイルをコピーした後は Linuxサーバを再起動してください。 c /Users/ user /AppData/LocalLow/Google/Google Japanese Input/config1.db コマンド実行手順は以下のとおりとなります。 $ ssh -p 2422 -i ~/.vagrant.d/insecure_private_key vagrant@127.0.0.1 mkdir -p ~/.mozc $ cd c /Users/ user /AppData/LocalLow/Google/Google Japanese Input $ scp -P 2422 -i ~/.vagrant.d/insecure_private_key config1.db vagrant@127.0.0.1 ~/.mozc $ cd gitした場所 /vagrant-emacs-mozc $ vagrant reload なお、Linuxサーバに mozc-utils-guiパッケージ をインストールすれば、mozc_tool コマンドの表示を Cygwin/X 等の Xサーバに表示させることができます。コマンドは以下のとおりです。 $ sudo apt install mozc-utils-gui $ /usr/lib/mozc/mozc_tool --mode=config_dialog ただし、「emacs-mozc を動かすための設定(サーバ準備編)」でインストールした Linuxサーバ では、LANG の設定をしただけでは日本語の表示はできないようです。 9) (共通)Emacs で C-o を入力することにより、mozc-emacs-helper が起動し、漢字が入力できることを確認する。 ※ 「emacs-mozc を動かすための設定(WSL 設定編)」から本ページに来た場合は、まだ漢字入力はできません。このまま進んでください。 10) (共通)Windows の IME の切換えキーで mozc を切り替えられるように調整する。 ※ Virtualbox の Linux で Emacs を動作させている場合は、本設定で利用している Keyhac は有効に機能しません。本設定は、Windows版 Emacs や Windows の Xサーバソフトを経由して Emacs を動作させている場合に有効な設定です。 Windows の IME の切換えキー(「半角/全角」(日本語キーボード用)や Alt-`(英語キーボード用))で mozc を切り替えられるようにするには、「Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版)」の併用を検討ください。(Fakeymacs extension の real-emacs を有効にしてください。)IME の切換えの対応のみ行いたい場合には、以下の設定が利用できます。設定の方法はコメントの URL を参照してください。 これらの設定は、NTEmacs(gnupack 含む)と Windows の Xサーバで動く Emacs で機能するようにしています。Windows の Xサーバで Emacs が動作しているかどうかは、ウィンドウのタイトルで判定しています。Emacs の設定でタイトルの表示内容を変更している場合には、re.search 内の検索する正規表現を調整することで対応してください。 # -*- mode python; coding utf-8-with-signature-dos -*- # http //qiita.com/hshimo/items/2f3f7e070ae75243eb8b import re from keyhac import * def configure(keymap) def is_real_emacs(window) if (window.getClassName() == "Emacs" or (window.getProcessName() in ["mstsc.exe", # WSLg "msrdc.exe", # WSLg "XWin.exe", # Cygwin/X "XWin_MobaX.exe", # MobaXterm/X "XWin_MobaX_1.16.3.exe", # MobaXterm/X "XWin_Cygwin_1.14.5.exe", # MobaXterm/X "XWin_Cygwin_1.16.3.exe", # MobaXterm/X "Xming.exe", # Xming "vcxsrv.exe", # VcXsrv "GWSL_vcxsrv.exe", # GWSL "GWSL_vcxsrv_lowdpi.exe", # GWSL "X410.exe", # X410 "Xpra-Launcher.exe", # Xpra ] and # ウィンドウのタイトルを検索する正規表現を指定する # Emacs を起動しているウィンドウを検索できるように、Emacs の frame-title-format 変数を # 次のように設定するなどして、識別できるようにする # (setq frame-title-format (format "emacs-%s - %%b " emacs-version)) # (別途公開している sglstart コマンドを利用している場合、%%b の後のスペースは必要) re.search(r"^emacs-", window.getText()))) return True else return False keymap_real_emacs = keymap.defineWindowKeymap(check_func=is_real_emacs) # IME 切り替え用のキーの置き換え keymap_real_emacs["(243)"] = keymap.InputKeyCommand("C-Yen") # 半角/全角 キー keymap_real_emacs["(244)"] = keymap.InputKeyCommand("C-Yen") # 半角/全角 キー keymap_real_emacs["A-(25)"] = keymap.InputKeyCommand("C-Yen") # Alt-` キー keymap_real_emacs["(29)"] = keymap.InputKeyCommand("C-F1") # 無変換 キー keymap_real_emacs["(28)"] = keymap.InputKeyCommand("C-F2") # 変換 キー # keymap_real_emacs["O-LAlt"] = keymap.InputKeyCommand("C-F1") # 左 Alt キーの単押し # keymap_real_emacs["O-RAlt"] = keymap.InputKeyCommand("C-F2") # 右 Alt キーの単押し 変更履歴 2014/10/30 このページを作成した。 2014/11/02 minibuffer-setup-hook の設定を追加した。 2014/11/04 wdired を使う際の設定を追加した。 2014/11/18 「emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編)」に対応した。 2014/11/20 IME が ON の時、カーソルの移動が遅くなる対策を追加した。(w32-pipe-read-delay の値を デフォルトの 50 から 10 に変更した。) 2014/11/24 minibuffer-setup-hook 内の unless の判定を Emacs-24.3 以前のバージョンでも有効なものに変更した。 2014/11/27 helm の検索パターンを mozc を使って入力した場合にエラーが発生することがある対策を追加した。 2014/11/29 helm の検索パターンを mozc を使って入力する場合、入力中は helm の候補の更新を停止するようにした。 2014/12/12 helm で候補のアクションを表示する際に IME を OFF にするようにした。 2015/01/17 mozc-popup を最新と思われるサイトのものの利用に変更した。 2015/03/11 mozc-helper-process-recv-response のアドバイスの内容を簡略化した。 2015/07/22 Emacs-24.3 以上の対応の記載とした。 2015/09/10 advice を Emacs-24.4 以降の書式に見直した。 2015/10/30 mozc-im を利用するように設定を全面的に見直した。 2015/11/12 mozc-candidate-dispatch の advice を一度削除していたが、やはりあるべき設定のようなので復活させた。 2015/12/28 keyhac の設定の内容を、Keyhac for Windows ver 1.70 用に見直しをした。 2016/12/01 https //github.com/d5884/mozc-im/pull/1 で報告されている問題について対策した。 2017/07/11 Emacs で mozc を利用する際に Windows の IME の切換えキーを mozc の切り替えキーとして機能させるための設定を見直した。 2017/12/21 keyhac の設定で import re の行が不足していたので、追加した。 2019/05/17 wdired 利用時に C-o による日本語入力を可能とする設定を追加した。 2020/04/13 「IME を無効にするキー設定」と「IME を有効にするキー設定」を追加した。 2020/04/19 ワンショットモディファイアの機能を利用し、左右の Alt キーに IME の切替えを割り当てられるようにした。
https://w.atwiki.jp/ntemacs/pages/69.html
【トピック】 ● WSL_トピック ● Docker_トピック ● Xpra_トピック 【お知らせ】 2022/10/14 追記 本ページの設定を多少変更すると WSLg で動かすこともできます。WSLg ではキーボードの設定がうまく行われない場合があるようですので、その場合は以下のどちらかの行の設定を行ってください。 setxkbmap -layout us setxkbmap -layout jp 2022/10/14 追記 X11 サーバを GWSL とするように、全体的な見直しを行いました。 2022/04/19 追記 2021年の補完UI事情とEmacs28に標準添付されるfido-vertical-modeについて https //qiita.com/tadsan/items/f1738cb463b1ec536f84 2022/01/04 追記 興味深いコマンドを2つ紹介します。 https //linuxcommand.net/stdbuf/ https //vmi.jp/software/cygwin/cocot.html 2021/12/10 追記 2019/04/22 追記 で winsudo というコマンドを紹介しておりますが、gsudo というコマンドがあるようです。まだ使ってみてはおりませんが、紹介します。 https //qiita.com/_masa_u/items/a799745d70b30c32a03b https //github.com/gerardog/gsudo 2021/09/17 追記 WSL2 で WSLg と GWSL を利用する場合の比較をしてみました。GWSL は VcXsrv を利用しているので、GWSL に記載してある内容は VcXsrv を利用する場合にも当てはまります。 <GWSL> ・新しい Microsoft IME を選択しているとカーソルのレスポンスが悪くなる(古いMicrosoft IME や Google日本語入力ではこの問題は発生しません) ・Emacs 起動時にウインドウが小さく表示される問題が発生する( 13) に回避対策の記載があります) ・DISPLAY 環境変数を独自に設定する必要がある( 0 では動きません) <WSLg> ・カーソルが遅くなる問題が発生しない ・Emacs 起動時にウインドウが小さく表示される問題が発生しない ・DISPLAY 環境変数が 0 で動作する ・Windows 10 では動作しない ⇒ (2022/11/18 追記)Windows 10 21H1 以降では、パッチ KB5020030 をインストールし、Microsoft Store版 WSLv1.0.0 をインストールすると動作するようです。 ・Emacs を最大化しても完全な最大化とならない(下部の最大化がならない部分から背景が見えてしまいます) ⇒ (2022/11/18 追記)Microsoft Store版 WSLv1.0.0 では改善していることを確認しました。 ・ウインドウ枠が独自のため、アクティブなウインドウの状況が分かりづらい(Windows でアクティブウインドウのタイトルバーの色を変える設定にしていても、WSLg のウインドウは対象になりません) ・Windows のウィンドウの操作作法が利用できない(画面の上画面外へのドラックで画面の最大化がされるなどの操作が使えません) 現時点では、後半の2つの問題を許容できないことから、GWSL を選択して利用しています。 2021/08/09 追記 X Window のキーリピートの速度を変更するには、以下のようなコマンドで対応できます。なお、 2020/08/08 追記 に記載しているとおり、VcXsrv は 新しい Microsoft IME と相性が良くありません。VcXsrv を利用する場合は、IME に Google 日本語入力や古い Microsoft IME を選択するようにしてください。 $ xset r rate 400 40 2021/06/25 追記 Emacs の設定は、leaf.el を使うのが人気のようです。お試しください。 https //qiita.com/conao3/items/347d7e472afd0c58fbd7 2021/06/17 追記 本ページでは、補完 UI として helm を紹介していますが、主流は変わりつつあるようです。以下が参考となりますので紹介させていただきます。 https //blog.tomoya.dev/posts/a-new-wave-has-arrived-at-emacs/ 2021/02/05 追記 本ページの内容は WSL2 でも動作します。DrvFs や VolFs の記載がある場合には、Windows 側のファイルシステム、WSL2 側のファイルシステムと読み替えてください。 2020/08/08 追記 Windows 10 ver 2004 の WSL/WSL2 で Emacs を VcXsrv に接続して使っていると、カーソル移動後の停止がワンテンポずれる症状が発生します。これは、IME に新しい Micorosoft IME が選択されているときに発生することが分かりました。IME に Google 日本語入力や古い Microsoft IME が選択されているときには発生しません。WSL/WSL2 の Emacs では、mozc_emacs_helper.exe を使って Google 日本語入力と連携して日本語入力を行っているため、なかなか気づきませんでした。 ⇒(2020/08/23 追記)この現象は MobaXterm の X サーバでは発生しないようです。 2020/08/06 追記 WSL2 から VcXsrv(GWSL の中でも利用)へのアクセスを許可する方法として、vcxsrv.exe の起動時に -ac オプションを付ける(Disable access control とする)方法があります。この方法は、以下のサイトで紹介しているようなセキュリティ的な問題が発生するので、避けることをお勧めします。 https //itpass.scitec.kobe-u.ac.jp/~itpass/hiki/hiki.cgi?%5BExp2010%5DX+Window+System#X+-E3-81-AE-E3-82-BB-E3-82-AD-E3-83-A5-E3-83-AA-E3-83-86-E3-82-A3 アクセスをコントロールする方法は、以下のようなものがあります。 xhost でアクセス許可を行う(説明の 10) に設定例あり) xauth でアクセス許可を行う ssh の -Y オプション(ForwardX11Trusted)を使う(-X オプション(ForwardX11)の場合、config に XAuthLocation の設定をしてもうまく機能しませんでした。ネットにも同様の報告があります。) ssh でポートフォワーディングをして使う 2020/07/14 追記 次のページを作成しました。この下の追記の設定とセットでご利用ください。 Windows の ssh から WSL2 の sshd に接続するための設定 2019/07/16 追記 ssh-agent-wsl を利用すると、Windows 側の ssh-agent を WSL から利用できるようです。 https //github.com/rupor-github/ssh-agent-wsl https //qiita.com/q1701/items/3cdc2d7ef7a3539f351d 次の設定を ~/.bash_profile に追加するのが良いと思います。 eval $( ssh-agent-wsl コマンドを置いた Windows のパス /ssh-agent-wsl -a ~/.ssh/ssh-agent-wsl.sock -r) ssh-add で登録した秘密鍵が保持されパスフレーズの入力が不要となるため、次の設定で紹介している wslemacs-start.exe との相性が良くなります。 WSL の emacsclient を Windows から利用するための設定 ⇒(2020/07/10 追記)同じ開発者から新しいプロジェクトがリリースされていました。 https //github.com/rupor-github/wsl-ssh-agent https //hnakamur.github.io/blog/2020/03/06/setup-wsl-ssh-agent/ 使ってみましたが、wsl-ssh-agent はまだ WSL2 で利用できないようですので、ssh-aget-wsl を使い続けることにしました。 2020/04/28 追記 新しい Linux ディストリビューションへのホームディレクトリの移行には、以下のバッチファイルをお試しください。バッチファイルですので、コマンドプロンプトからの起動となります。(変数の設定値は適宜変更してご利用ください。) set home_dir=user set src_distro=Ubuntu-18.04 set dst_distro=Ubuntu-20.04 wsl -d %dst_distro% -u root bash -c "mv /home/%home_dir% /home/%home_dir%.orig" wsl -d %src_distro% -u root bash -c "(cd /home; tar cvf - %home_dir%)" | wsl -d %dst_distro% -u root bash -c "(cd /home; tar xvf -)" 2019/09/20 追記 Xサーバを利用する際に「全角/半角」キーリピート問題が発生する場合には、次のページを参考に対応してください。(私は US キーボードを使っているため、この問題には遭遇していません。) https //seesaawiki.jp/w/kou1okada/d/20160905%3A%20Ubuntu%20%A4%CE%C6%FC%CB%DC%B8%EC%C6%FE%CE%CF%B5%A1%C7%BD%A4%CE%C9%D4%B6%F1%B9%E7 2019/08/09 追記 13) に「<フレームの高さを補正する設定>」の説明を追加しました。WSL Emacs on VcXsrv でフレームを開く際、高さが低く作成される状況が改善されます。 2019/04/22 追記 WSL から Windows の exe コマンドを管理者権限で実行するコマンド winsudo を公開しました。お試しください。 https //github.com/smzht/wsl-utils#-winsudo なお、このコマンドを利用する際は、【お知らせ】 の 2019/03/04 追記 に記載した「exec /dev/tty」の設定を解除する必要があります。解除時に利用できる exe コマンドを実行するためのコマンド win も併せて公開していますので、お試しください。 https //github.com/smzht/wsl-utils#-win 2019/04/19 追記 WSL で Emacs を使っている理由の大きな一つに、次の設定をすることにより Emacs の Dired で Windows ショートカットのハンドリングができることがあります。Windows ショートカットは Windows のデスクトップ環境で頻繁に使われており、ファイルシステムに依存していない一般ファイルであることから可搬性も高く(どこにでも移動や複写ができる)、Emacs の Dired で使えると非常に便利です。是非お試しください。 Windows ショートカットを dired と連携して使うための設定 WSL で NTFS シンボリックリンクや Windows ショートカットを作成するための設定 ディレクトリの Windows ショートカットがある場合、shell の cd コマンドでその Windows ショートカットを辿ることはできません。そのために、次の設定と組み合わせた利用をお勧めします。この設定は tramp の接続先でも動作します。 shellバッファ を簡単にポップアップするための設定 以上の設定は、すべて本ページで紹介しているものとなります。 2019/03/04 追記 Windows 10 1809 にアップデートしたところ、Emacs の shell-mode で exe コマンドを実行できなくなりました。(実行すると、プロンプトが帰ってこなくなります。)次のページで同様の問題が報告されています。 https //github.com/Microsoft/WSL/issues/3895 回避策として、以下の方法があるようです。 ipconfig.exe | cat のように、パイプで cat につなげる ipconfig.exe /dev/tty のように、/dev/tty にリダイレクトする 次の設定をする。(.bashrc に設定することで shell 起動時に有効にできます。ただし、【トピック】 の 2019/04/22 追記 に記載したとおり、不都合が発生するコマンドもありますので、ご留意ください。) $ exec /dev/tty 2019/03/13 追記 本設定で利用している Xサーバ VcXsrv(GWSL の中でも利用)について、次のページに不具合情報が報告されています。コピペ時の「–」の欠落などは注意が必要と思いました。内容を確認してみてください。 https //fujii.github.io/2018/08/30/emacs-on-wslinux/ ⇒(2021/09/17 追記)「–」の欠落の問題は、VcXsrv の最新のバージョンでは発生しないようです。 【本題】 Windows Subsystem for Linux で Emacs を使うための設定です。 ※ 以下では、WSL で Emacs を使うために推奨される設定のみを紹介しています。Emacs を使うための基本的な設定は別途必要です。 mozc_emacs_helper.exe で Windows 側の Google 日本語入力と連携可能。ユーザ辞書も一元管理! tramp で Linux サーバや Docker とも連携可能。GWSL(VcXsrv)を使っているので、X クライアントソフトも起動できる! eww でブラウザとしても利用可能。英語ページは google-translate で瞬時に翻訳! twitter も利用可能。アイコンも表示できるので、投稿者の識別が容易! 1) Windows 10 1903 以降をインストールする。 また、アクティブウインドウのタイトルバーの色を変更するための次の設定を有効にする。(オプション) https //www.softantenna.com/wp/tips/windows-10-change-titlebar-color/ ※ 設定すると、マルチディスプレイ使用時にアクティブウインドウの確認がし易くなります。 2) Microsoft Store から GWSL(X11 サーバアプリ)をインストールする。 https //opticos.github.io/gwsl/ https //opticos.github.io/gwsl/tutorials/manual.html 3) Windows Subsystem for Linux を有効にし、Microsoft Store から Ubuntu-22.04 をインストールした後、コンソールを起動する。 https //docs.microsoft.com/ja-jp/windows/wsl/install-win10 4) WSL に複数の Linux のディストリビューションをインストールしている場合は、コマンドプロンプトで次のコマンドを実行し、Ubuntu-22.04 ディストリビューションをデフォルトにしておく。(Windows 側から、bash.exe や wsl.exe を実行した際に使われる WSL ディストリビューションとなる。) wsl -l wsl -s Ubuntu-22.04 5) インターネットにプロキシを介して接続している場合は、.bashrc に http_proxy 等の環境変数を設定し、コンソールを再起動する。 6) 必要であれば sudo をパスワード無しで利用できるように設定する。 次のコマンドを実行し、 $ sudo -s # EDITOR=vi visudo 最終行に次の行を追加する。( username の部分は WSL の利用ユーザに変更する。) username ALL=(root) NOPASSWD ALL ※ wsl のユーザは sudo グループに所属しているため、%sudo の行以降に設定を追加する必要があるようです。 ※ /etc/sudoers.d ディレクトリ配下にファイルを置く方法もあります。この方法を採る場合は、sudo -s で root になってから作業を行うと、visudo -c でエラーが発生した場合に対処できると思います。 https //qiita.com/buchyanS/items/d240ea7e883bea734718 https //hnakamur.github.io/blog/2012/05/04/use-slash-etc-slash-sudoers-dot-d-slash/ 7) Ubuntu のアップデートおよび設定を行う。 $ sudo -E apt update $ sudo -E apt upgrade ※ プロキシが必要な環境下では、apt や add-apt-repository 実行時の sudo に -E オプションを付けて http* 環境変数を引き継ぐようにしてください。 http //qiita.com/aKenjiKato/items/18f9b8553f8ad4117d79 また、locale を変更する。 $ sudo -E apt install language-pack-ja language-pack-gnome-ja $ sudo update-locale LANG=ja_JP.UTF-8 必要であれば、日本語マニュアルをインストールする。 $ sudo -E apt install manpages-ja manpages-ja-dev さらに、タイムゾーンを JST にする。 $ sudo dpkg-reconfigure tzdata 8) Emacs 等をインストールする。 $ sudo -E apt install emacs emacs-el $ sudo -E apt install cmigemo ※ Ubuntu-22.04 では emacs-27 がインストールされます。emacs-28 をインストールしたい場合には、以下を実行してください。 $ sudo -E apt remove emacs emacs-el $ sudo -E apt autoremove $ sudo -E add-apt-repository ppa kelleyk/emacs $ sudo -E apt update $ sudo -E apt install emacs28 emacs28-el $ sudo -E apt install cmigemo 9) x11-xserver-utils パッケージをインストールする。 $ sudo -E apt install x11-xserver-utils 10) ログイン時の設定を行う。 ~/.bash_profile に次の設定を行う。 if which tasklist.exe /dev/null ! tasklist.exe | grep -q '^GWSL_vcxsrv'; then ( cmd.exe /c GWSL.exe /dev/null 2 1 sleep 3 if uname -v | grep -q 'Microsoft'; then export DISPLAY= 0 else export DISPLAY=$(ip route | awk '/^default/ {print $3; exit}') 0 xhost + $(ip -4 a show eth0 | grep -oP '(? =inet\s)\d+(\.\d+){3}') fi # access control を enabled にする xhost - ) fi [ -r ~/.bashrc ] source ~/.bashrc ※ 上記の設定は、22) で紹介している次の設定の wslemacs-start.exe を利用することにより、GWSL.exe を自動起動することを想定しています。 WSL の emacsclient を Windows から利用するための設定 ※ GWSL の内部から起動されている VcXsrv には、-noprimary オプションを付ける必要があります。VcXsrv のオプションを指定するには、GWSLアイコンの右クリック - XServer Profiles - Add A Profile で新しい Custom Profile を作成してください。設定後、メニューに追加された Custom profile を選択して有効とする必要があります。また、GWSL を一度終了し、wslemacs-start.exe を再起動するなどして上記のスクリプトを実行することで、X Window Server のセキュリティの設定が行われるようにしてください。なお、設定するオプションには次の値をお勧めします。 -multiwindow -clipboard -noprimary -wgl ※ VcXsrv のオプションは次のページを参照してください。 https //gist.github.com/ctaggart/68ead4d0d942b240061086f4ba587f5f ※ GWSL のメニューから、DPI Scaling Mode を選択することができます。初期値は「Linux」となっているようですが、私はリモートデスクトップ利用時に DPI の問題が発生したため、「Windows」に変更して利用しています。 ※ GWSL に X クライアントから接続できない場合は、次の対応をお試しください。 1. 「コントロールパネル」- 「システムとセキュリティ」- 「Windows Defender ファイアウォールによる PC の保護」を開き、メニュから「詳細設定」をクリックする 2. 「受信の規則」をクリックし、「GWSL VcXsrv windows xserver」と「GWSL PulseAudio server」の行があれば、全て削除する 3. Windows の GWSL アプリを起動する(既に起動していれば、再起動する) 4. VcXsrv のファイアウォールの通信許可設定ダイアログ画面が開くので、「パブリックネットワーク」のチェックボックスにチェックを入れ、通信を許可する また、~/.bashrc に次の設定を追加する。 if [ "$INSIDE_EMACS" ]; then TERM=eterm-color fi umask 022 if uname -v | grep -q 'Microsoft'; then export DISPLAY= 0 else export DISPLAY=$(ip route | awk '/^default/ {print $3; exit}') 0 fi unset LIBGL_ALWAYS_INDIRECT ※ LIBGL_ALWAYS_INDIRECT の設定は unset にしました。VcXsrv(GWSL の中で利用)の -wgl オプションとの組み合わせで、mesa の glxgears が動くことを確認しています。(ネットには、VcXsrv のオプションを -nowgl とすべきとの情報が多くありますが、-wgl で動いたので良しとしました。)次のページに関連する情報があります。 https //x.cygwin.com/docs/ug/using-glx.html https //www.web-dev-qa-db-ja.com/ja/xorg/libglalwaysindirect-1%E3%81%AF%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%81%AF%E4%BD%95%E3%82%92%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F/957258497/ ※ Ubuntu が提供する .bashrc には、初めの方に次の設定があり、bash がインターラクティブモードで起動したとき以外は以降が実行されないようになっています。.bashrc に設定を追記する場合は、追記する場所にご留意ください。 # If not running interactively, don't do anything case $- in *i*) ;; *) return;; esac 11) 次のサイトから Migu 1M フォントをダウンロードして、ttf ファイルを ~/.local/share/fonts ディレクトリ配下にコピーする。(fonts ディレクトリ配下に、サブディレクトリを作って置いても大丈夫です。) http //mix-mplus-ipa.osdn.jp/migu/ ※ 生成が必要ですが Ricty 系もお勧めです。 本設定では使いませんが、Windows のフォントも WSL で使いたければ次のコマンドを実行する。 $ ln -s /mnt/c/Windows/Fonts ~/.local/share/fonts/windows 最後に次のコマンドを実行する。 $ fc-cache -fv 12) ~/.emacs.d/init.el 等に次のとおりのフォントの設定を行う。 ;; デフォルト フォント (set-face-attribute 'default nil family "Migu 1M" height 120) ;; プロポーショナル フォント (set-face-attribute 'variable-pitch nil family "Migu 1M" height 120) ;; 等幅フォント (set-face-attribute 'fixed-pitch nil family "Migu 1M" height 120) ;; ツールチップ表示フォント (set-face-attribute 'tooltip nil family "Migu 1M" height 90) ※ この設定は gnupack の init.el にある設定を転記したものです。 13) さらに ~/.emacs.d/init.el 等に次の設定を行う。 <色の設定> ;; 色を設定する (add-to-list 'default-frame-alist '(foreground-color . "white")) (add-to-list 'default-frame-alist '(background-color . "black")) <フレームの高さを補正する設定> (defun reset-frame-parameter (frame) (sleep-for 0.1) (set-frame-parameter frame 'height 32)) (add-hook 'after-make-frame-functions #'reset-frame-parameter) <coding-system の設定> (prefer-coding-system 'utf-8-unix) ;; プロセスが出力する文字コードを判定して、process-coding-system の DECODING の設定値を決定する (setq default-process-coding-system '(undecided-dos . utf-8-unix)) ※ 設定値の car を "undecided-dos" にしておくと、Windows コマンドの出力にも柔軟に対応できます。関連して 29) の説明も参照してください。 <shell の設定> (setq shell-file-name "/bin/bash") (setq shell-command-switch "-c") (setq explicit-shell-file-name shell-file-name) <migemo の設定> (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "/usr/share/cmigemo/utf-8/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init) 14) WSL のコンソールを再起動してから Emacs を起動し、X Window サーバ上に表示することを確認する。 15) 次を参考に emacs-mozc の設定を行う。 emacs-mozc を動かすための設定(WSL 設定編) ※ 以降はオプションです。 20) さらに次の設定を行う。これで、いろいろな操作が helm を通してできるようになる。 helm を使うための設定 21) さらに次の設定を行う。これで、find-file コマンドなどで Windows パスや UNC パスを直接利用可能となる。 Windowsパス と UNCパス を使えるようにするための設定(WSL 設定編) ※ この設定は、以降の 22) と 23) を使うために必要となります。 22) さらに次の設定を行う。これで、Windows 側から emacsclient が利用可能となる。 WSL の emacsclient を Windows から利用するための設定 23) さらに次の設定を行う。これで、dired で Windows ショートカットがシンボリックリンクのように利用可能となる。 Windows ショートカットを dired と連携して使うための設定 24) さらに次の設定を行う。これで、dired で ディレクトリのシンボリックリンクを実体のパスで開くことができるようになる。 dired でディレクトリのシンボリックリンクを実体のパスで開くための設定 ※ (setq-default find-file-visit-truename t) の設定を行っていない場合に意味のある設定となります。 25) さらに次の設定を行う。これで、dired で DrvFs ファイルシステム上に NTFS シンボリックリンクを作成できるようになる。また、Windows ショートカットも作成可能となる。 WSL で NTFS シンボリックリンクや Windows ショートカットを作成するための設定 ※ Windows ショートカットはファイルシステムに依存していないリンクファイルですので、ハンドリングが容易です。VolFs の他、tramp の接続先にも複写することができます。私は、DrvFs 上に置くリンクはできるだけショートカットを利用するようにしており、23) の設定をすることで dired から利用しています。 26) さらに次の設定を行う。これで、dired が Windows のファイラーのように利用できるようになる。 WSL で cygstart 的コマンドを使うための設定 dired を OS と連携して使うための設定 ※ こちらの設定もお勧めです。 singleton な動きをする cygstart 的コマンドを使うための設定 (WSL版) ※ 次の設定も行うと、Emacs で表示している URL を Windows のブラウザで開くことができます。 (require 'browse-url) (setq browse-url-browser-function 'browse-url-generic) (setq browse-url-generic-program "wslstart")) (global-set-key (kbd "C-c u") 'browse-url-at-point) 27) さらに次の設定を行う。これで、tramp の高速化が図られ、接続先の shell から Xクライアントが起動できるようになる。上記の「dired を OS と連携して使うための設定」と組み合わせると、xdg-open などを使ってリモートにあるドキュメント等が開けるようになる。(このページの最初の方にある画像の二番目のものは、この機能を使って表示したものです。) tramp を tramp-method “scp” で使うための設定 tramp による接続先で Xクライアント を実行するための設定 28) さらに次の設定を行う。これで、tramp 接続環境でも動作する shell-pop のような環境を利用できるようになる。 shellバッファ を簡単にポップアップするための設定 29) さらに次の設定を行う。これで、shell-mode で Windows のコマンドを発行しても、漢字が文字化けしなくなる。 shell-mode で複数の漢字コードを混在して利用できるようにするための設定 30) さらに次の設定を行う。これで Emacs のバッファの内容を Windows のテキストエディタを通して印刷できるようになる。 Notepad を使って印刷するための設定(WSL 設定編) 31) さらに次の設定を行う。これで Emacs から VSCode でファイルを開けるようになる。 WSL の Emacs から VSCode でファイルを開くための設定 32) さらに次の設定を行う。これで VSCode で開いているファイルを Emacs で開けるようになる。 VSCode で開いているファイルを WSL の Emacs で開くための設定 33) さらに次の「Emacs 全般で利用できる設定」や「説明ページを作るまでもない設定の紹介」の箇所にあるものから必要なものがあれば設定を行う。 https //w.atwiki.jp/ntemacs/ お勧めの設定は以下の辺りとなります。 helm から comint の入力履歴を検索するための設定 helm で peco もどきのコマンドを使うための設定 locate を使うための設定(WSL 設定編) ediff をスマートに使うための設定 elscreen を使うための設定 whitespace を使うための設定 cua-mode を使うための設定 multiple-cursors を使うための設定 google-translate を使いやすくするための設定 沢山開いているバッファをできるだけ一度に閉じるための設定 (global-set-key (kbd "M-c") (lambda () (interactive) (desktop-clear) (tramp-cleanup-all-connections))) カレントバッファを一発で閉じるための設定 (global-set-key (kbd "M-k") (lambda () (interactive) (kill-buffer (buffer-name)))) ウィンドウの右端で改行をするかどうかを切り替えるための設定 (global-set-key (kbd "C-c C- return ") 'toggle-truncate-lines) 横スクロールするための設定(キー設定が逆の感覚の方もいるかも) (global-set-key (kbd "C-,") 'scroll-left) ; のキー (global-set-key (kbd "C-.") 'scroll-right) ; のキー C-h を Backspace として使うための設定 https //qiita.com/takc923/items/e279f223dbb4040b1157 (define-key key-translation-map (kbd "C-h") (kbd " DEL ")) help の機能は、f1 キーで利用することができます。 34) 最後に次の設定を行う。これで Windows 全体を Emacsキーバインドで操作できるようになる。 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 変更履歴 2017/05/23 このページを作成した。 2017/06/12 Emacs 起動時のエラーを抑制するため、LIBGL_ALWAYS_INDIRECT 環境変数の設定を追加した。 2017/07/04 色の設定を追加した。 2017/08/21 locale の設定を追加しました。 2017/08/21 Emacs-25 のインストールする方法を追記した。 2017/09/04 「w32-symlinks を dired と連携して使うための設定」を見直しバージョン「Windows ショートカットを dired と連携して使うための設定」のリンクに置き換えた。 2017/11/01 オプションの設定に「 WSL で NTFS シンボリックリンクを作成するための設定」を追加した。 2017/11/04 パスの途中に NTFS シンボリックリンクを含むファイルを削除しようとするとフリーズする問題の対策を追加した。 2017/11/06 Emacs を起動するスクリプトを追加し、VcXsrv が起動していない場合は事前に起動するように対応した。 2017/11/11 emacsclient を使うための説明を追記した。 2018/03/09 21) の設定を全面的に見直し、UNCパスの利用にも対応した。 2018/03/14 25) の設定を見直し、Windows ショートカットの作成にも対応した。 2018/03/15 29) に設定を新たに追加した。 2018/03/16 22) の説明の内容を整理した。 2018/03/20 30) の設定を wslstart を使った方法に見直した。 2018/03/21 26) の設定に browse-url を使うための設定を追記した。 2018/03/22 VcXsrv 上に立ち上げた Emacs でリージョンの選択をすると、選択しただけでリージョンの内容が Windows のクリップボードに登録される症状が発生していたのを対策した。 2018/03/22 21) の設定で、コンピュータ名が IPアドレスの UNC パスを mount した際でも正常に動作するように対応した。 2018/03/23 wsl コマンドを使っている設定について、高速化対策を行った。 2018/04/11 10) に日本語キーボードを使う場合に必要そうな設定とそのコメントを追記した。 2018/04/12 33) にお勧めの設定のリンクを追加した。 2018/05/11 8) に tramp 利用時の不具合についての対応策について追記した。 2018/05/11 7) にタイムゾーンを JST にする説明を追加した。 2018/06/19 8) に Emacs-26系で動作させるための説明を追記した。 2018/06/26 11) のフォントを置くディレクトリを、~/.fonts ディレクトリから ~/.local/share/fonts ディレクトリに変更した。 2018/07/30 13) に最低限必要な coding-system の設定を追記した。 2018/08/19 13) に cmigemo の設定を追記した。 2018/11/11 6) に sudo をパスワード無しで利用するための設定の説明を追加した。 2018/11/21 1) にアクティブウインドウのタイトルバーの色を変更するための設定の説明を追加しました。 2019/08/09 13) に「<フレームの高さを補正する設定>」の説明を追加した。 (function(i,s,o,g,r,a,m){i[ GoogleAnalyticsObject ]=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, script , //www.google-analytics.com/analytics.js , ga ); ga( create , UA-40267130-1 , atwiki.jp ); ga( send , pageview );
https://w.atwiki.jp/141oboegaki/pages/16.html
emacs 「C」はコントロールキー 起動 コマンドライン上で emacs (-nw) (filename) 閉じる C-x C-c 一行カット・ペースト C-k C-y 上書き保存 C-x C-s 別名で保存 C-x C-w 検索・置換がイマイチわかんね 今度やってみよ @anapaw sh sh (コマンドライン上のコマンド) ex) sh lpr hoge.ps hoge.ps を印刷 Xの範囲指定 blo x1 x2 Yの範囲指定 mami y1 y2 マクロ引数 マクロ中に[1],[2]等
https://w.atwiki.jp/nino-add-up/pages/22.html
インストール CD-ROMを入れて指示に従うだけ Compaq Visual Fortran 使い方 Develper Studioを起動 [file]- [New]- FilesタブのFortran Free Format Source Fileを選択 同時にFilenameを入力してLocationの設定をちゃんとしておく Programを書いてCompile- Build- Execute Programで計算開始 結果はwrite文を用いて表示またはファイルに出力させる VineLinuxの場合 f77 filename でコンパイル a.out が作成される ./a.out で実行 ./a.out result.txt でファイルに書き出しができる f77 filename -o name で name という実行ファイルが作られる ./name で実行 Programのきまり 最初にプログラムの開始を宣言 ex. Program programname 最後にプログラムの終わりを宣言 ex. end program programname(開始を宣言したときのprogramnameと一致していないとエラー) 「!」以降はコメント文 整数、単精度、倍精度の区別を意識する必要あり(参考:型宣言文,誤差) 型宣言文 if文 データの入力(read文+format)? データの出力(write文+format)? その他 Fortranの組み込み関数 エラー番号は参考になる(ソフト内は英語表記だがXLsoftのHPでは日本語のオンラインドキュメントがある.) Fortran90の小技 参考 Compaq Visual Fortran Fortran ResQ Wikipedia(Fortran90) [PR] メールフォーム
https://w.atwiki.jp/uec1class1/pages/17.html
Emacsを起動する方法 uxtermかkterm上で emacs [C-]:ctrlを押しながら [M-]:「メタキー(クローバーのようなマーク)」を押しながら Emacs上でのコマンド ーコントロールキーを押しながら、2文字打つものー C-x C-c Emacsを終了する C-x C-b バッファのリストを表示 C-x C-f ファイルを読み込む C-x C-s ファイルをセーブする C-x C-q バッファを読み出し専用にしたり,書き込み可能にする~ C-x C-w ファイルを名前を付けて保存する C-x C-x マークとポイントの位置を交換 ーコントロールキーを押しながら1文字を打ち、手を離し文字をうつー C-x u 1回分の変更を元に戻す C-x h 現在の段落をリージョンに設定 C-x k バッファを削除 C-x i カーソル位置にファイルを読み込み,挿入する C-x d ディレクトリエディタ Dired を起動する ーコントロールキーを押しながら1文字打つー C-b 1文字左に移動 C-d カーソルのある文字を削除 C-f 1文字右に移動 C-g 実行の取りやめあるいは途中まで入力したコマンドのとりやめ C-k カーソルの位置から行末までを削除したものは削除リングへ移動される C-n 1文字下に移動 C-p 1文字上に移動 C-v 次の画面に移動 C-r 逆方向へパターン文字探索 C-s 順方向へパターン文字探索 C-y カーソルの位置からコピーして挿入 C-_またはC-/ 1回分の変更を元に戻す C- Spc 現在のカーソル位置にマークを設定 ーー M-v 前の画面に移動 M-h 現在の段落をリージョンに設定 M-x goto-line LINE カーソルを LINE 行へ移動する ーー Del カーソルの前の文字を削除 Tab ミニバッファのテキストを可能な限り補完 Spc 1語分だけ補完 Ret 補完を行った後,ミニバッファから脱出 ーその他ー ? ミニバッファのテキストから補完可能な候補を表示 パターン文字検索を行っている間のコマンド C-s 順方向の文字探索を繰り返す C-r 逆方向の文字探索を繰り返す C-y 行の残りの部分を探索文字列へ取り入れる C-w 次の単語を探索文字列へ取り入れる BS 文字検索の文字列を消去する ESC 文字検索を終了する Emacsがわからない人へ チュートリアルを起動すると良。 ー起動の仕方ー 1:kterm上で「ls -l ~/mac」を入力 2:sun上で「/class/ee/bin/setup_cl」を入力 3:Emacs 上で「C-h T RET 」を実行する。 日本語チュートリアル: 0.Emacs 1.たまご 「0 RET 」を入力して「Emacsの日本語チュートリアル」を選択する。 Emacs、Eggにおいて日本語入力の仕方 コントロールキー、オプションキー、ヘルプキーを同時に押す。 下の方が E_ →あ_になると日本語入力モード あ_→E_ になるとローマ字モード C-option-Help(¥) 日本語入力もう一度押すとローマ字モード ー変換文字数の変え仕方ー C-i 変換文字数を1つ減らす C-o 変換文字数を1つ増やす 補足:Eggのコマンド C-b 直前の文節へカーソルを移動 C-f 直後の文節へカーソルを移動 C-a 先頭の文節へカーソルを移動 C-e 最後の文節へカーソルを移動 C-n 次候補を表示 C-p 前候補を表示 C-i 文節の長さを短縮 C-o 文節の長さを伸長 C-m 文字列を確定し,フェンスモードを脱出 C-k カーソルの前までを確定 C-v 文節の情報をミニバッファに表示 M-s 変換候補一覧をミニバッファに表示 M-h (文節の)文字をひらがなに変換 M-k (文節の)文字をカタカナに Spc 次候補を表示 Ret 文字列を確定し,フェンスモードを脱出 / 文字列を確定し,フェンスモードを脱出